1. Field of the Invention
This invention relates to graphical image manipulation systems.
2. Description of Related Art
The closest prior art known to the inventor for this kind of image manipulation are the two US Patents: Hamburg, “Compound layers for composited image manipulation”, U.S. Pat. No. 6,028,583, Issued Feb. 22, 2000, incorporated by reference in its entirety, and Hamburg, et al, “Adjustment layers for composited image manipulation”, U.S. Pat. No. 5,974,198, Issued Oct. 26, 1999, incorporated by reference in its entirety.
In a typical graphics package, an image processing filter is applied either to the entire image, or a region selected by the user. If a region is to be used, it must be specified prior to the filter being applied. Once the filter has been applied, changing its options requires reverting to the unprocessed version of the image, and starting again. This makes trying out lots of filters very time consuming, resulting in the user being less inclined to try all of the options at his or her disposal.
To undo a mistake in a typical graphics package, the user must undo each stroke of paint applied, until the mistake is gone. If the mistake occurred in the first stroke of paint, every single stroke drawn afterwards must be removed in order to undo the mistake. A mistake could be corrected in a much easier way by selectively erasing portions of paint strokes.
Changing the color of strokes drawn by the user in a typical graphics package is difficult or impossible to do. If say the user draws a stroke using one shade of blue, they may wish to see what the stroke would look like if it had been drawn in a slightly different shade of blue, or even a completely different color. This would require reverting back to the state the image was in prior to the strokes being drawn, and the user would have to repeat the strokes they made using a different color. Even for a trivial amount of drawing, this is very challenging, for a more complex drawing, it becomes increasingly less feasible.
If the user wishes to apply a filter to a specific region of the image, they must first define it prior to applying the filter. This is typically done using a number of selection tools. Once a filter has been applied, if the user wishes to change the region it is applied to, they must undo the filter, change the region, and re-apply the filter. If the user were able to modify the region the filter is applied to after a filter had been applied, it would save a lot of time and make things much easier and quicker.
To change the applied image processing filter in a typical graphics package requires the applied filter to be undone (i.e. the image is reverted back to a state prior to the filter being applied), and a new filter applied. A good graphics package may have more than fifty such filters, which results in a prohibitive amount of work involved on the part of the user if they wanted to see what each filter looked like.
To change the options a filter offers to the user, such as the strength or radius of the filter, in a typical graphics package requires the filter to be undone and re-applied as above. The ability to modify a filters options after it has been applied to the image would allow the user a much greater ability to tweak the result to their taste.
Limitations of Adjustment Layers, as used in Photoshop version 5.0, have been observed.
U.S. Pat. No. 5,974,198 to Adobe states “A key property that sets these functions apart from filters (such as blurring operations), is that each pixel in the result only depends on the spatially corresponding pixel in the source image”. For each pixel in the source image, an adjustment function is applied. This adjustment function can only read the one pixel given to it when computing the resulting pixel. This is called a one-to-one mapping. The reason adjustment layers can only use one-to-one mappings is that at the time of processing, only the value of the one pixel currently being processed is actually known. Take for example the situation where the bottom most layer is blurring the image (which is a complex, or many to one mapping), and the topmost adjustment needs to read a pixel from a random co-ordinate. The correct value for this pixel is not stored anywhere, as it is an intermediate value. The correct value is that of the unprocessed image after it has been processed by all the adjustment layers beneath the one currently being processed. If the filter were to read from the unprocessed image, it would result in the ignoring of the bottom adjustment layer's effect. If it were to read from the fully processed image, it would create feedback is as it would be reading values that had already been processed by the same function. When processing the entire image, this problem can be resolved by processing each layer at a time in its entirety. So starting from the unprocessed image, a new image is created from the result of the first adjustment layer. A new image is then created from the result of this new image processed by the next adjustment layer, and so on, until each adjustment layer has been processed. This requires at least three copies of the image to be stored simultaneously. The problem is that the entire image must be processed in this way, even if a smaller region needs to be processed, say as a result of the user drawing a stroke of paint. Unless the intermediate images are kept (at the cost of a large amount of system resources), an adjustment filter reading from anything other than the current pixel being processed is still not guaranteed to read in the correctly processed value.
The easy solution to this is for the adjustment filter to simply not read from anything other than the current pixel being processed, which is the approach taken by U.S. Pat. No. 5,974,198.
Needs exist for improved image manipulation in creating images.